home *** CD-ROM | disk | FTP | other *** search
- # -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
- # ex: ts=8 sw=8 noet filetype=sh
- #
- # povray completion by "David Necas (Yeti)" <yeti@physics.muni.cz>
-
- _povray()
- {
- local cur prev povcur pfx oext defoext
- defoext=png # default output extension, if cannot be determined FIXME
-
- COMPREPLY=()
- povcur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
-
- _expand || return 0
-
- case $povcur in
- [-+]I*)
- cur="${povcur#[-+]I}" # to confuse _filedir
- pfx="${povcur%"$cur"}"
- _filedir pov
- COMPREPLY=( ${COMPREPLY[@]/#/$pfx} )
- return 0
- ;;
- [-+]O*)
- # guess what output file type user may want
- case $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]F' ) ) in
- [-+]FN) oext=png ;;
- [-+]FP) oext=ppm ;;
- [-+]F[CT]) oext=tga ;;
- *) oext=$defoext ;;
- esac
- # complete filename corresponding to previously specified +I
- COMPREPLY=( $( ( IFS=$'\n'; echo "${COMP_WORDS[*]}" | grep '^[-+]I' ) ) )
- COMPREPLY=( ${COMPREPLY[@]#[-+]I} )
- COMPREPLY=( ${COMPREPLY[@]/%.pov/.$oext} )
- cur="${povcur#[-+]O}" # to confuse _filedir
- pfx="${povcur%"$cur"}"
- _filedir $oext
- COMPREPLY=( ${COMPREPLY[@]/#/$pfx} )
- return 0
- ;;
- *.ini\[|*.ini\[*[^]]) # sections in .ini files
- cur="${povcur#*\[}"
- pfx="${povcur%\["$cur"}" # prefix == filename
- [ -r "$pfx" ] || return 0
- COMPREPLY=( $(sed -e 's/^[[:space:]]*\[\('"$cur"'[^]]*\]\).*$/\1/' -e 't' -e 'd' -- "$pfx") )
- # to prevent [bar] expand to nothing. can be done more easily?
- COMPREPLY=( "${COMPREPLY[@]/#/$pfx[}" )
- return 0
- ;;
- *)
- cur="$povcur"
- _filedir '?(ini|pov)'
- return 0
- ;;
- esac
- }
- complete -F _povray $filenames povray xpovray spovray
-